from unittest.mock import patch
import mymodule
# 假设我们有一个模块 mymodule，其中有一个函数 some_function
# some_function 内部调用了另一个函数 other_function

# 在测试中，我们不想调用真实的 other_function，所以我们想要模拟它


def test_some_function():
    with patch("mymodule.other_function") as mock_other_function:
        # 在这个with语句块中，mymodule.other_function 已经被替换成了 mock_other_function
        # 我们可以配置 mock_other_function 的行为
        mock_other_function.return_value = "mocked value"

        # 调用 some_function，它内部会调用被模拟的 other_function
        result = mymodule.other_function()

        # 验证结果
        assert result == "mocked value"
        # 验证 mock_other_function 是否被调用了一次
        mock_other_function.assert_called_once()
    print("Success!")

# 运行测试
test_some_function()

def magicmock_simulate_open() -> None:
    """模拟一个对象的方法"""

    def some_function(dependency):
        return dependency.some_method()

    # 创建一个 MagicMock 对象
    mock_dependency = MagicMock()

    # 配置 mock 对象的行为
    mock_dependency.some_method.return_value = "mocked value"

    # 使用 mock 对象调用函数
    result = some_function(mock_dependency)

    # 验证函数的行为
    assert result == "mocked value"
    """ 
        if mock_dependency is called once then the assert would pass
    """
    mock_dependency.some_method.assert_called_once()